#ifndef GRAPH_HPP
#define GRAPH_HPP

#include <vector>
#include <boost/ref.hpp>

#include "Node.hpp"
#include "Edge.hpp"

class Graph
{
public:
  bool getIsDirected() const;
  bool addNode(const Node& node);
  bool addEdge(const Edge& edge, bool addNodes = false);

private:
  std::vector< boost::reference_wrapper< const Node > > nodes;
  std::vector< boost::reference_wrapper< const Edge > > edges;
  bool isDirected;
};

#endif
